library(tsibble)
Warning: package 'tsibble' was built under R version 4.4.3
Registered S3 method overwritten by 'tsibble':
  method               from 
  as_tibble.grouped_df dplyr

Attaching package: 'tsibble'
The following objects are masked from 'package:base':

    intersect, setdiff, union
library(dplyr)

Attaching package: 'dplyr'
The following objects are masked from 'package:stats':

    filter, lag
The following objects are masked from 'package:base':

    intersect, setdiff, setequal, union
library(ggplot2)
library(plotly)
Warning: package 'plotly' was built under R version 4.4.3

Attaching package: 'plotly'
The following object is masked from 'package:ggplot2':

    last_plot
The following object is masked from 'package:stats':

    filter
The following object is masked from 'package:graphics':

    layout
library(feasts)
Warning: package 'feasts' was built under R version 4.4.3
Loading required package: fabletools
Warning: package 'fabletools' was built under R version 4.4.3
library(fable)
Warning: package 'fable' was built under R version 4.4.3
set.seed(123)
df <- tibble(
  date = seq.Date(from = as.Date("2010-01-01"), to = as.Date("2012-12-01"), by = "month"),
  streamflow = runif(36, min = 10, max = 100)
)
df_tsibble <- df %>%
  as_tsibble(index = date)
ggplotly(
  ggplot(df_tsibble, aes(x = date, y = streamflow)) +
    geom_line(color = "steelblue") +
    labs(title = "Monthly Streamflow", x = "Date", y = "Flow (cfs)")
)
decomp <- df_tsibble %>%
  model(stl = STL(streamflow ~ season(window = 13)))
Warning: 1 error encountered for stl
[1] .data contains implicit gaps in time. You should check your data and convert implicit gaps into explicit missing values using `tsibble::fill_gaps()` if required.
print(decomp)
# A mable: 1 x 1
           stl
       <model>
1 <NULL model>
if ("stl" %in% class(decomp)) {
  
  components <- decomp %>%
    components()

  autoplot(components) +
    labs(title = "Decomposition of Streamflow Data", subtitle = "Trend, Seasonal, and Residual Components")
} else {
  print("Model fitting did not succeed.")
}
[1] "Model fitting did not succeed."
print(class(components))
[1] "function"